package cn.itsource.servlet;

import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(urlPatterns={"/cookie1/*","/cookie2/*"})//  /cookie1/add /cookie1/find
public class Cookie1Servlet extends HttpServlet{
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//获取请求资源路径 uri /del.cookie  /add.cookie   -- uri = 上下文路径/请求
		String uri = req.getRequestURI(); 
		//uri.lastIndexOf -- 获取指定字符串在uri中最后一个位置 -- 注意：左闭右开（含头不含尾）
		String path = uri.substring(uri.lastIndexOf("/"));
		//能够向页面输出中文
		resp.setContentType("text/html;charset=utf-8");
		if("/add".equals(path)){
			doAdd(req,resp);
		}else if("/find".equals(path)){
			doFind(req,resp);
		}
	}

	private void doFind(HttpServletRequest req, HttpServletResponse resp) throws IOException {
		//Cookie保存在浏览器中，跟服务器重启没有关系，默认是保存在内存中，只要浏览器不关闭一直存在
		Cookie[] cookies = req.getCookies();
		if(cookies!=null){
			for (Cookie c : cookies) {
				String name=c.getName();
				String value = URLDecoder.decode(c.getValue(), "UTF-8");
				resp.getWriter().print("<h2>"+name + "----" + value+"</h2>");
			}
		}else{
			resp.getWriter().print("<h2>没有任何Cookie</h2>");
		}
	}

	//添加Cookie的方法
	private void doAdd(HttpServletRequest req, HttpServletResponse resp) throws IOException {
		Cookie c1 = new Cookie("name", URLEncoder.encode("汤姆", "UTF-8"));//name值不能写中文 
	//	c1.setMaxAge(15);//设置c1的过期时间为15秒，15秒之后自动删除  （跟浏览器关不关闭没有影响）
		c1.setPath("/");//设置根路径有效
		Cookie c2 = new Cookie("age", "33");//name值不能写中文 
		//将Cookie的数据响应给浏览器
		resp.addCookie(c1);
		resp.addCookie(c2);
		
		//添加成功
		resp.getWriter().print("<h2>Cookie添加成功!!!</h2>");
	}
}
